package com.gjh.ouygoing.service.impl;


import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gjh.ouygoing.entity.PaymentInfo;
import com.gjh.ouygoing.enums.PayType;
import com.gjh.ouygoing.mapper.PaymentInfoMapper;
import com.gjh.ouygoing.service.PaymentInfoService;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

@Service
@Slf4j
public class PaymentInfoServiceImpl extends ServiceImpl<PaymentInfoMapper, PaymentInfo> implements PaymentInfoService {


    /**
     * 创建我的这个微信支付日志的方法
     * @param plainText 报文信息
     */
    @Override
    public void createPaymentInfo(String plainText) {
        log.info("记录支付日志=================================================================");
        Gson gson = new Gson();//实例化一个JSON的对象
        HashMap plainTextMap = gson.fromJson(plainText, HashMap.class);//得到我的这个订单信息的map集合

        String orderNO = (String) plainTextMap.get("out_trade_no");//得到我的这个订单编号
        String transactionId = (String) plainTextMap.get("transaction_id");//得到我的这个微信支付的订单号
        String tradeType = (String) plainTextMap.get("trade_type");//得到我的这个微信支付的渠道，可能是微信端，可能是在小程序端支付
        String tradeState = (String) plainTextMap.get("trade_state");//得到我的这个交易状态，他可能会包含支付成功，转入退款等等
        Map<String,Object> amount = (Map) plainTextMap.get("amount");
        Integer payerTotal = ((Double)amount.get("payer_total")).intValue();//得到我的这个支付金额

        PaymentInfo paymentInfo = new PaymentInfo();//得到顶大的相关信息
        //传入我的这个订单信息（订单支付号、微信支付的渠道、支付状态、支付的金额）
        paymentInfo.setOrderNo(orderNO)
                .setPaymentType(PayType.WXPAY.getType())
                .setTransactionId(transactionId)
                .setTradeType(tradeType)
                .setTransactionId(transactionId)
                .setTradeType(tradeType)
        .setTradeState(tradeState)
        .setPayerTotal(payerTotal)
        .setContent(plainText);
        baseMapper.insert(paymentInfo);
    }
}
